package com.godofgamblers.hotelmanagementsystem.service;

import com.godofgamblers.hotelmanagementsystem.dto.OfflinePriceDto;
import com.godofgamblers.hotelmanagementsystem.dto.TimeDto;
import com.godofgamblers.hotelmanagementsystem.pojo.Check_In_Info;
import com.godofgamblers.hotelmanagementsystem.pojo.Room;
import com.godofgamblers.hotelmanagementsystem.pojo.Room_Type;
import com.godofgamblers.hotelmanagementsystem.pojo.User;

import java.util.List;

public interface Check_In_InfoService {



    /**
     * 线上预定开单
     * @param check_in_infoPojo
     * @return String
     */
    public String addCheckInInfo(Check_In_Info check_in_infoPojo);

    /**
     * 计算线下价格
     * @param offlinePriceDto   线下价格dto类，封装计划入住时间、计划退房时间、房间类型、会员折扣、全场折扣
     * @return BigDecimal   价格
     */
    OfflinePriceDto offlineShowRooms(OfflinePriceDto offlinePriceDto);

    /**
     * 线下开单
     * @param user 用户pojo类,传入用户id
     * @param offlinePriceDto  线下价格pojo类，传入价格、房间类型id、计划入住时间、计划离店时间
     * @param check_in_info 入住信息pojo类、传入房间号、入住人姓名、身份证、实际入住时间
     * @return String 操作结果
     */
    String offlineBooking(User user, OfflinePriceDto offlinePriceDto, Check_In_Info check_in_info);

    /**
     * 退房
     * @param room 传入房间编号
     * @return String 操作结果
     */
    String checkOut(Room room);

    /**
     * 显示房间信息
     * @param room  传入房间类型及状态
     * @return List<Room>
     */
    OfflinePriceDto operateShowRoom(Room room);

    /**
     * 查询所有房间类型信息
     * @return
     */
    List<Room_Type> findRoomTypeInfos();


    //根据订单项id找到实际入住时间和实际离开时间
    public TimeDto findTime(Integer order_item_id);
}
